A large variety of computer software tools have been developed whose purpose is to assist people in their day to day activities, such as word processors, spreadsheets, scheduling software, etc. Most of these software tools require direct interaction with a person to activate their functionality. A new class of software tool is being developed that assists people without requiring direct interaction. For example, software that reminds an individual about an appointment about to take place. Another example would be software that examines a variety of news sources, notifying the user when a relevant article has become available.
A more sophisticated example would be software that not only examines news sources, but also extracts the important features in each article. For example, such software might be watching for announcements of changes in an interest rate. Based on the relevant extracted features, the software would automatically negotiate with other software that is following the stock prices of companies in which the user has an investment, possibly resulting in a stock trade. The user would only be notified after the actions have taken place.
Software of the kind described above is called "agent software" or simply an "agent". An agent is a computer executable program or software artifact whose purpose is to act as a surrogate (or assistant) to a human or another software artifact. More precisely, a software agent is a software-based computer system with the following properties:
1. Autonomy. An agent operates in the "background" as an independent process with control over its actions and state. PA1 2. Socialability. An agent can interact with other agents (and humans). PA1 3. Reactivity. An agent examines its "environment" and responds to changes that occur in it. PA1 4. Pro-activeness. An agent can engage in behavior directed to a goal.
One example of a software agent is an autonomous query for documents on the World Wide Web (WWW), which "crawls" around the Internet looking for documents that satisfy the query. When a document satisfying the query is found, the user is notified and the document is presented.
Agents are currently implemented as independent software systems, each of which is fully responsible for all of its functionality such as examining its environment and detecting changes that are relevant as well as finding and establishing communication with other agents. Such a design does not scale up well to millions of agents, all of whom will be independently examining the environment. For example, in a military system, one might assign an agent to represent every entity of interest in the entire theatre of operations: soldiers, weapons, targets, etc. The number of agents in such a system will be very large, yet the response time requirements of the system are severe.
An agent's environment typically is composed of a stream of information objects, such as, e.g., images, sound or video streams, as well as traditional data objects such as text files and structured documents contained for example in facilities located on a network. As is known in the art, agents can be launched over the network, e.g., the Internet or an intranet, by a search engine to examine the network's environment. The search engine provides each agent with a defined "interest", i.e., a set of objects, typically specified by a user's query. The agent attempts to match its interest with the objects in the environment. The agents return any matched environment objects to the search engine, which then determines the relevance of the returned environment objects with respect to the queries. The environment that the agents are examining can be static, in which the environment constitutes a library of preexisting content, or dynamic, in which the content is a steadily changing object stream, e.g., a news feed.
Further information can be had regarding some of the concepts discussed herein with reference to the following publications:
1 L. Aiello, J. Doyle, and S. Shapiro, editors. Proc. Fifth Intern. Conf. on Principles of Knowledge Representation and Reasoning. Morgan Kaufman Publishers, San Mateo, Calif., 1996. PA0 2 K. Baclawski. Distributed computer database system and method, December 1997. U.S. Pat. No. 5,694,593. Assigned to Northeastern University, Boston, Mass. PA0 3 A. Del Bimbo, editor. The Ninth International Conference on Image Analysis and Processing, volume 1311. Springer, September 1997. PA0 4 N. Fridman Noy. Knowledge Representation for Intelligent Information Retrieval in Experimental Sciences. PhD thesis, College of Computer Science, Northeastern University, Boston, Mass., 1997. PA0 5 R. Jain. Content-centric computing in visual systems. In The Ninth International Conference on Image Analysis and Processing, Volume II, pages 1-13, September 1997. PA0 6 Y. Ohta. Knowledge-Based Interpretation of Outdoor Natural Color Scenes. Pitman, Boston, Mass., 1985. PA0 7 G. Salton. Automatic Text Processing. Addison-Wesley, Reading, Mass., 1989. PA0 8 G. Salton, J. Allen, and C. Buckley. Automatic structuring and retrieval of large text files. Comm. ACM, 37(2):97-108, February 1994. PA0 9 A. Tversky. Features of similarity. Psychological review, 84(4):327-352, July 1977. PA0 10 M. Woodridge and N. Jennings. Intelligent agents: Theory and practice. Knowledge Engineering Review, 10(2):115-152, 1995.
The disclosures of the publications referenced in this "Background of the Invention" are incorporated herein by reference.
While conventional search engines employing agents are generally suited to their intended purposes, certain drawbacks and limitations on their operation may constrain their use in certain applications. For example, networks such as the Internet are realizing significant rates of growth in terms of both number of sites and number of users. For search engines to operate successfully in the near future, they will need to scale to accommodate that growth, perhaps employing tens of millions or more of agents. If all such agents are visiting Internet sites, it can be readily appreciated that latencies will increase and perhaps reach unacceptable levels. The same may become true for large private networks. It would be desirable to provide a search system that scales to accommodate such growth without an appreciable drop in performance.